package com.xiaoma.tpo.service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.xiaoma.tpo.dao.TUserDao;
import com.xiaoma.tpo.domain.TUser;
import com.xiaoma.tpo.dto.TUserRoleRightVO;
import com.xiaoma.tpo.utils.Encrypt;
@Service
public class TUserService {
	@Autowired
	private TUserDao tUserDao;
	
	public List<TUser> findAllUser(){
		return	tUserDao.findAll();
	}
	public void save(TUser tUser){
		tUser.setGenTime(new Date());
		tUser.setPassword(Encrypt.generatePassword(tUser.getPassword()).toLowerCase());
		tUserDao.insert(tUser);
	}
	public void update(TUser tUser){
		TUser tUser1 = new TUser();
		tUser1.setId(tUser.getId());
		List<TUser> rTUsers = tUserDao.findByColumns(tUser1);
		if(rTUsers != null && rTUsers.size()>0){
			TUser tUser2 = rTUsers.get(0);
			if(!tUser2.getPassword().equals(tUser.getPassword())){
				tUser2.setPassword(Encrypt.generatePassword(tUser.getPassword()).toLowerCase());
			}
			tUser2.setUsername(tUser.getUsername());
			tUser2.setUpdateTime(new Date());
			tUser2.setNickname(tUser.getNickname());
			tUser2.setMobile(tUser.getMobile());
			tUser2.setEmail(tUser.getEmail());
			tUserDao.update(tUser2);
		}
		
	}
	public void delete(Integer id){
		tUserDao.delete(id);
	}
	public List<TUserRoleRightVO> findUserRoleRightByUsername(String username) {
		List<Object> obj = tUserDao.findUserRoleRightByUsername(username);
		List<TUserRoleRightVO> menus = new ArrayList<TUserRoleRightVO>();
		//先把导航菜单（就是第一层的菜单）找出来
		int menuid = 1;
		for(int i=0;i<obj.size();i++){
			TUserRoleRightVO tUserRoleRightVO = (TUserRoleRightVO)obj.get(i);
			if(tUserRoleRightVO.getpId() == 1){
				tUserRoleRightVO.setMenus(new ArrayList<TUserRoleRightVO>());
				tUserRoleRightVO.setMenuid(menuid);menuid++;
				tUserRoleRightVO.setIcon("icon-sys");
				menus.add(tUserRoleRightVO);
			}
		}
		//再把子菜单装进去  递归
		for(TUserRoleRightVO tUserRoleRightVO : menus){
			for(int i=0;i<obj.size();i++){
				TUserRoleRightVO tUserRoleRightVO1 = (TUserRoleRightVO)obj.get(i);
				if(tUserRoleRightVO1.getpId().intValue() == tUserRoleRightVO.getId().intValue()){
					setChildren(tUserRoleRightVO1,obj);
					tUserRoleRightVO1.setIcon("icon-add");
					tUserRoleRightVO.getMenus().add(tUserRoleRightVO1);
				}
			}
		}
		
		return menus;
	}
	public void setChildren(TUserRoleRightVO tUserRoleRightVO,List<Object> obj){
		for(int i=0;i<obj.size();i++){
			TUserRoleRightVO tUserRoleRightVO1 = (TUserRoleRightVO)obj.get(i);
			if(tUserRoleRightVO1.getpId().intValue() == tUserRoleRightVO.getId().intValue()){
				setChildren(tUserRoleRightVO1,obj);
				tUserRoleRightVO1.setIcon("icon-nav");
				tUserRoleRightVO.getMenus().add(tUserRoleRightVO1);
			}
		}
	}
	//用户判断用户是否为 admin ,如果是则不允许删除 
	public boolean findById(Integer id) {
		TUser tUser = new TUser();
		tUser.setId(id);
		List<TUser> tUsers = tUserDao.findByColumns(tUser);
		if(tUsers != null && tUsers.size()>0){
			TUser tUser2 = tUsers.get(0);
			if("admin".equals(tUser2.getUsername())){
				return true;
			}
		}
		return false;
	}
	//验证用户是不是重复 如果重复就不允许添加
	public boolean validateUser(TUser tUser,Integer mark) {
		TUser tUser1 = new TUser();
		tUser1.setUsername(tUser.getUsername());
		List<TUser> tUsers = tUserDao.findByColumns(tUser1);
		if(tUsers != null && tUsers.size()>0){
			//如果mark == 2说明是编辑
			if(mark ==2){
//				TUser tUser3 = new TUser();
//				tUser3.setId(tUser.getId());
//				List<TUser> tUsers2 = tUserDao.findByColumns(tUser3);
//				if("admin".equals(tUsers2.get(0).getUsername())){
//					return true;
//				}else{
//					return false;
//				}
				Integer id = tUsers.get(0).getId(); 
				Integer id1 = tUser.getId();
				if(!id.equals(id1)){
					return true ;
				}else{
					return false;
				}
			}
			return true;
		}
		return false;
	}
}
